// var i;
// var s = cc._decorator;
// var c = s.ccclass;
// var l = s.property;
// var u = s.menu;
// var p = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.materal_normal = null;
//         t.materal_gray = null;
//         t.interactable = !0;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.start = function () {};
//     t.prototype.shezhi_anniu_jiaohuxing = function (e) {
//         this.button = this.node.getComponent(cc.Button);
//         this.interactable = e;
//         if (this.button) {
//             this.button.interactable = e;
//         }
//         var t = this.node;
//         this.digui_xiugai_jiedian_caizhi(t);
//     };
//     t.prototype.digui_xiugai_jiedian_caizhi = function (e) {
//         var t = e.getComponent(cc.Sprite);
//         if (t) {
//             t.setMaterial(0, this.interactable ? this.materal_normal : this.materal_gray);
//         }
//         var n = e.getComponent(cc.Label);
//         if (n) {
//             n.setMaterial(0, this.interactable ? this.materal_normal : this.materal_gray);
//         }
//         var o = e.children;
//         for (var i = 0; i < o.length; i++) {
//             this.digui_xiugai_jiedian_caizhi(o[i]);
//         }
//     };
//     __decorate([l(cc.Material)], t.prototype, "materal_normal", void 0);
//     __decorate([l(cc.Material)], t.prototype, "materal_gray", void 0);
//     return __decorate([c, u("AL_GAME_HUA/ButtonEnabled")], t);
// })(cc.Component);
// exports.default = p;


// // 引入cc._decorator中的装饰器
// var _decorator = cc._decorator; 
// var ccclass = _decorator.ccclass; // 类装饰器
// var property = _decorator.property; // 属性装饰器
// var menu = _decorator.menu; // 菜单装饰器

// // 定义一个新的类 ButtonEnabledClass 继承自 cc.Component
// var ButtonEnabledClass = (function (ComponentSuper) {
//     // 类构造函数
//     function ButtonClass() {
//         // 调用父类的构造函数
//         var instance = (null !== ComponentSuper && ComponentSuper.apply(this, arguments)) || this;
//         instance.materal_normal = null; // 正常材质
//         instance.materal_gray = null; // 灰色材质
//         instance.interactable = true; // 交互条件，默认可交互
//         return instance;
//     }

//     // 继承父类
//     __extends(ButtonClass, ComponentSuper);

//     // start生命周期函数
//     ButtonClass.prototype.start = function () {};

//     // 设置交互性
//     ButtonClass.prototype.shezhi_anniu_jiaohuxing = function (isInteractable) {
//         this.button = this.node.getComponent(cc.Button);
//         this.interactable = isInteractable;
//         if (this.button) {
//             this.button.interactable = isInteractable;
//         }
//         var currentNode = this.node;
//         this.digui_xiugai_jiedian_caizhi(currentNode);
//     };

//     // 改变节点材质
//     ButtonClass.prototype.digui_xiugai_jiedian_caizhi = function (node) {
//         var sprite = node.getComponent(cc.Sprite);
//         if (sprite) {
//             sprite.setMaterial(0, this.interactable ? this.materal_normal : this.materal_gray);
//         }

//         var label = node.getComponent(cc.Label);
//         if (label) {
//             label.setMaterial(0, this.interactable ? this.materal_normal : this.materal_gray);
//         }

//         var childrenNodes = node.children;
//         for (var index = 0; index < childrenNodes.length; index++) {
//             this.digui_xiugai_jiedian_caizhi(childrenNodes[index]);
//         }
//     };

//     // 使用装饰器为属性添加元数据
//     __decorate([property(cc.Material)], ButtonClass.prototype, "materal_normal", void 0);
//     __decorate([property(cc.Material)], ButtonClass.prototype, "materal_gray", void 0);
    
//     // 使用装饰器将类添加到指定菜单中
//     return __decorate([ccclass, menu("AL_GAME_HUA/ButtonEnabled")], ButtonClass);
// })(cc.Component);

// // 导出模块
// exports.default = ButtonEnabledClass;


// 引入 Cocos Creator 的装饰器
const { ccclass, property, menu } = cc._decorator;

/**
 * ButtonEnabledClass 类
 * 用于动态控制按钮的交互性（启用和禁用），并根据状态切换材质。
 */
@ccclass
@menu("AL_GAME_HUA/ButtonEnabled")
class ButtonEnabledClass extends cc.Component {
    /**
     * 正常状态下的材质
     * @type {cc.Material}
     */
    @property(cc.Material)
    materal_normal = null;

    /**
     * 禁用状态下的材质（灰色材质）
     * @type {cc.Material}
     */
    @property(cc.Material)
    materal_gray = null;

    /**
     * 按钮的交互状态（可交互/不可交互）
     * @type {boolean}
     */
    interactable = true;

    /**
     * 生命周期 start
     * 初始化时调用
     */
    start() {
        // 可在此添加初始化逻辑
    }

    /**
     * 设置按钮的交互性
     * @param {boolean} isInteractable 是否可交互
     */
    shezhi_anniu_jiaohuxing(isInteractable) {
        // 获取当前节点的按钮组件
        const buttonComponent = this.node.getComponent(cc.Button);
        this.interactable = isInteractable;

        if (buttonComponent) {
            // 设置按钮的交互状态
            buttonComponent.interactable = isInteractable;
        }

        // 修改当前节点及其子节点的材质
        this.digui_xiugai_jiedian_caizhi(this.node);
    }

    /**
     * 递归修改节点及其子节点的材质
     * @param {cc.Node} node 要修改的节点
     */
    digui_xiugai_jiedian_caizhi(node) {
        // 修改精灵组件的材质
        const spriteComponent = node.getComponent(cc.Sprite);
        if (spriteComponent) {
            spriteComponent.setMaterial(0, this.interactable ? this.materal_normal : this.materal_gray);
        }

        // 修改文本组件的材质
        const labelComponent = node.getComponent(cc.Label);
        if (labelComponent) {
            labelComponent.setMaterial(0, this.interactable ? this.materal_normal : this.materal_gray);
        }

        // 遍历子节点，递归调用以修改子节点的材质
        node.children.forEach((childNode) => {
            this.digui_xiugai_jiedian_caizhi(childNode);
        });
    }
}

// 导出模块
module.exports = ButtonEnabledClass;
